package com.mdd.admin.service;

import com.mdd.common.util.PicturePathContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ResourceUtils;

import javax.annotation.PostConstruct;
import java.io.File;
import java.io.FileNotFoundException;

@Configuration
@Slf4j
public class PathConfigurer {

    @Value("/image/")
    public String uploadPath;

    /**
     * 初始化文件存储路径
     */
    @PostConstruct
    public void init() throws FileNotFoundException {
        // 拿到当前类路径、服务器api-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes  本地target/classes
        File path = new File(ResourceUtils.getURL("classpath:").getPath());
        if (!path.exists()) {
            // 本地正常讲是肯定存在，则不需要进入；
            // 主要是服务器上，因为是在jar包内部，因此不存在，会进入到此方法，将path指向空的File
            path = new File("");
        } else {
            path = new File(System.getProperty("user.dir"));
        }
        File upload = new File(path.getAbsolutePath() + uploadPath);
        // 本地：项目所在位置文件夹内/images/  服务器：jar包所在位置/images/
        if (!upload.exists()) {
            upload.mkdirs();
        }
        // 上面会丢失最后的/ 因此需要拼接
        String imagePath = upload.getAbsolutePath() + File.separator;

        // 赋值给图片路径保存上下文中
        PicturePathContext.setUploadPath(imagePath);

        log.info(">>>路径初始化成功:{}", imagePath);
    }
}

